#include <my_header.h>

/* Usage: ./2_inet_addr */
//使用inet_addr, 把点分十进制转化为网络字节序int(说白了就是把字符串直接转为二进制大端存储 )
int main()
{
char *ip = "116.162.172.51";
printf("ip: %s \n", ip);


//    116         162        172        51
// 0111 0100   1010 0010  1010 1100  0011 0011
// inet_addr的作用是转化为网络字节序int 存储(即大端法: 高字节位存低地址)
// 即:
//     0111 0100 低位 高字节
//     1010 0010
//     1010 1100
//     0011 0011 高位 低字节
in_addr_t  ip_int = inet_addr(ip);

// 由于主机是小端存储, 主机认为按照上面内存排序的存储, 你这个数据真实应该是:
// 0011 0011  1010 1100  1010 0010  0111 0100
// 主机认为这四个字节存储的数值, 十进制是: 866951796
printf("ip: %d \n", ip_int);

// &ip_int 取首地址, 相当于拿到地位: 0111 0100的地址
// 0111 0100 -> 十进制116 -> 转成字符 -> 对应ascii码为字符t
// 将输出t
char *chr = (char *)&ip_int;
printf("char:  %c \n", *chr);
return 0;
}


